1. Field of the Invention
The present invention relates to the field of STREAMS-based Transmission Control Protocol/Internet (TCP/IP) protocols. Specifically, the present invention relates to the field of modular implementation of the TCP handoff protocol in order to facilitate the transfer or migration of TCP states from one node to another node in a communication network. The present invention further relates to the field of content-aware request distribution in a web server cluster.
2. Related Art
Web server clusters are the most popular configurations used to meet the growing traffic demands imposed by the Internet. However, for web server clusters to be able to achieve scalable performance, when the cluster size increases, it is imperative that the cluster employs some mechanism and/or policy for balanced request distribution. For instance, it is important to protect web server clusters from network overload and to provide service differentiation when different client requests compete for limited server resources. Mechanisms for intelligent request distribution and request differentiation help to achieve scalable and predictable cluster performance and functionality, which are essential for today's Internet web sites.
Traditional request distribution methods try to distribute the requests among the nodes in a web cluster based on certain parameters, such as, IP addresses, port numbers, and load information. Some of these request distribution methods have the ability to check the packet header up to Layer 4 in the International Organization for Standardization Open Systems Interconnection (ISO/OSI) network reference model (e.g., TCP/IP) in order to make the distribution decision. As such, these methods are commonly referred to as Layer 4 request distributions.
FIG. 1 shows a communication network 100 of the prior art that illustrates a load balancing solution. In FIG. 1, a web server cluster 150 is shown. The cluster 150 can be a web site with a virtual IP address located at the load balancer 152. Various back-end web servers, such as back-end web server-1 155, back-end web server-2 157, on up to back-end web server-n 159 contain the content provided by the web site.
Typically, the load-balancer 152 sits as a front-end node on a local network and acts as a gateway for incoming connections. The load balancer 152 is also called a request distributor 152. Requests for content can come through the Internet 120 from various clients, such as client-1 110, client-2 112, on up to client-n 114. Incoming client requests are distributed, more or less, evenly to the pool of back-end web servers, without regard to the requested content. Further, the load balancer 152 forwards client requests to selected back-end web servers prior to establishing a connection with the client.
The three-way handshaking and the connection set up with the original client is the responsibility of the back-end web server. After the connection is established, the client sends to the back-end web server the HTTP request with the specific URL for retrieval.
In this configuration, the web server cluster 150 appears as a single host to the clients. To the back-end web servers in a web cluster 150, the front-end load-balancer 152 appears as a gateway. In essence, it intercepts the incoming connection establishment packets and determines which back-end web server should process a particular request. Proprietary algorithms implemented in the front-end load balancer 152 are used to distribute the requests. These algorithms can take into account the number of back-end web servers available, the resources (CPU speed and memory) of each back-end web server, how many active TCP sessions are being serviced, etc. The balancing methods across different load-balancing servers vary, but in general, requests are forwarded to the least loaded back-end web server in the cluster 150.
In addition, only the virtual address located at the load balancer 152 is advertised to the Internet community, so the load balancer also acts as a safety net. The IP addresses of the individual back-end web servers are never sent back to the web browser located at the client making a request, such as client 110. The load-balancer rewrites the virtual cluster IP address to a particular web server IP address using Network Address Translation (NAT).
However, because of this IP address rewriting, both inbound requests and outbound responses must pass through the load-balancer 152. This creates a bottleneck and limits the scalability of the cluster 150.
A better method for web request distribution takes into account the content (such as URL name, URL type, or cookies) of an HTTP web request when making a routing decision to a web server. The main technical difficulty of this approach is that it requires the establishment of a connection between the client and the request distributor. After the connection is established, the client sends the HTTP web request to a request distributor, which decides which web server to forward the HTTP web request for processing.
In this approach, the three-way handshaking protocol and the connection set up between the client and the request distributor happens first as shown in Prior Art FIG. 2. A request distributor 240 sets up the connection with the client (e.g., client-1 210). After that, a back-end web server (e.g., web server-1 232) is chosen by the request distributor 240 based on the content of the HTTP web request from the client-1 210. The request distributor 240 can be located at a front-end node that accesses a web cluster 230 containing a plurality of web servers, such as web server-1 232, web server-2, 234, on up to web server-n 236.
In the Internet environment, the hypertext transfer protocol (HTTP) protocol is based on the connection-oriented TCP protocol. In order to serve a client request, a TCP connection must first be established between a client and a server node. If the front-end node cannot or should not serve the request, some mechanism is needed to forward the request for processing to the right node in the web cluster.
The TCP handoff mechanism allows distribution of HTTP web requests on the basis of requested content and the sending of responses directly to the client-1 210. In this mechanism, the request distributor 240 transfers TCP states from the request distributor 240 to the selected back-end web server 232.
Previously, various mechanisms for transferring TCP states were implemented, including using a separate proprietary protocol at the application layer of an operating system. For example, in the Brendel et al. patent (U.S. Pat. No. 5,774,660), incoming packets to the front-end node have their protocol changed from TCP/IP protocol to a non-TCP/IP standard that is only understood by the proprietary protocol located at the application layer. Later, the packets are changed back to the TCP/IP protocol for transmission to the back-end web server. Thus, the Brendel et al. patent reduces processing efficiency by switching back and forth between the user-level and kernel level layers of the operating system.
Thus, a need exists for a more efficient design for implementing a mechanism for transferring TCP states in a web server cluster.